Mutation Testing
テスト対象のプログラムの一部を機械的に書き換えて、人工的な誤りを含むプログラムを模倣する
その結果、testがfailすれば、そういうコーナーケースも考慮されたtest suitだと評価できる
十分にテストされていないコード部分を特定する
弱いテスト(mutantsをkillしないテスト)を特定する
おもしろいけど、いまいち、わざわざ導入しようとまで思えないなmrsekut.icon
どういうところを書き換える?
GPT-4.icon
1. 条件文の変更
例: if (a > b) を if (a < b) に変更。
目的: テストがこの条件の変化を検出できるかどうかを確認。
2. 算術演算子の変更
例: a + b を a - b に変更。
目的: 算術の結果が異なる場合に、テストが適切に失敗するかどうかを確認。
3. リテラルの変更
例: const MAX_VALUE = 10 を const MAX_VALUE = 11 に変更。
目的: リテラルの違いがテストによって発見されるかを確認。
4. 論理演算子の変更
例: && を || に変更。
目的: 論理条件が逆転してもテストが通らないかを確認。
5. 戻り値の変更
例: return true; を return false; に変更。
目的: 関数の挙動が変わってもテストがそれを捕捉できるかどうかを確認。
6. 変数の置き換え
例: a = b を a = c に変更。
目的: 違う変数が使われた場合に、テストがその誤りを検出できるかどうかを確認。
7. メソッド呼び出しの変更
例: someMethod() を otherMethod() に変更。
目的: 違うメソッドが呼ばれたときにテストがそれを検出するかどうかを確認。
8. 条件式の反転
例: if (x) を if (!x) に変更。
目的: 条件の否定がテストで検出できるかどうかを確認。
関連